package src

import components.VillanoForm
import model.Pais
import model.Partida
import model.Villano
import modelApp.EditorPais
import modelApp.EditorVillano
import org.apache.wicket.markup.html.WebPage
import org.uqbar.wicket.xtend.WicketExtensionFactoryMethods
import org.uqbar.wicket.xtend.XLink
import components.PaisForm

abstract class EdicionPage<T> extends WebPage {
		
		@Property var T editor 
		@Property var Partida partida
		
		def abstract Partida updateData()
	
}

class EdicionVillano extends EdicionPage<EditorVillano> {
	
	extension WicketExtensionFactoryMethods = new WicketExtensionFactoryMethods
		
		
	new(Partida _partida, Villano villano) {
		partida = _partida
		addChild(new XLink("volver") => [onClick = [| responsePage = new ExpedientesPage(updateData)]] )
		editor = new EditorVillano(partida.bddVillano)
		editor.prepararElemento(villano)
		addChild(new VillanoForm("editarVillano", editor.asCompoundModel))
	}
	
	override updateData() {
		partida.bddVillano = editor.villanos
		partida
	}
	
}

class EdicionPais extends EdicionPage<EditorPais> {
	
	extension WicketExtensionFactoryMethods = new WicketExtensionFactoryMethods
		
	
	new(Partida _partida, Pais pais) {
		partida = _partida
		addChild(new XLink("volver") => [onClick = [| responsePage = new MapaMundiPage(updateData)]] )
		editor = new EditorPais(partida.mapamundi)
		editor.prepararElemento(pais)
		addChild(new PaisForm("editarPais", editor.asCompoundModel))
	}
	
	override updateData() {
		partida.mapamundi = editor.mapamundi
		partida
	}
	
}